# Python os模块详解
import os

# 获取当前目录
print(os.getcwd())
# 改变当前目录
os.chdir("../files")
# 再次获取当前目录
print(os.getcwd())
print()

path = "my_dir"
# 直接在当前目录下创建目录
os.mkdir(path, 0o755)
path = "abc/xyz/wawa"
# 递归创建目录
os.makedirs(path, 0o755)
print()

'''
print(os.getcwd())
path = "my_dir"
# 直接删除当前目录下的子目录
os.rmdir(path)
path = "abc/xyz/wawa"
# 递归删除子目录
os.removedirs(path)
'''

path = "my_dir"
# 直接重命名当前目录下的子目录
os.rename(path, "your_dir")
path = "abc/xyz/wawa"
# 递归重命名子目录
os.renames(path, "foo/bar/haha")
print()

# 判断当前目录的权限
ret = os.access(".", os.F_OK | os.R_OK | os.W_OK | os.X_OK)
print("os.F_OK | os.R_OK | os.W_OK | os.X_OK - 返回值：", ret)
# 判断 os_demo.py 文件的权限
file_path = __file__
print(file_path)
ret = os.access(file_path, os.F_OK | os.R_OK | os.W_OK)
print("os.F_OK | os.R_OK | os.W_OK - 返回值：", ret)
print()

import stat
# 将 1.txt 文件改为只读
os.chmod("1.txt", stat.S_IREAD)
# 判断是否可写
ret = os.access("1.txt", os.W_OK)
print("os.W_OK - 返回值：", ret)
print()

# 以读写、创建方式打开文件
fd = os.open("abc.txt", os.O_RDWR | os.O_CREAT)
# 写入文件内容
len1 = os.write(fd, "水晶潭底银鱼跃，\n".encode("utf-8"))
len2 = os.write(fd, "清徐风中碧竿横。\n".encode("utf-8"))
# 将文件指针移动到开始处
os.lseek(fd, 0, os.SEEK_SET)
# 读取文件内容
data = os.read(fd, len1 + len2)
# 打印读取到的字节
print(data)
# 将字节恢复成字符串
print(data.decode("utf-8"))
os.close(fd)
print()

# 为 abc.txt 文件创建快捷方式
os.symlink("abc.txt", "tt")
# 为 abc.txt 文件创建硬连接（Windows上就是复制文件）
os.link("abc.txt", "dst")
